{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": false
   },
   "source": [
    "# 10分钟入门pandas\n",
    "教程译自[10 Minutes to pandas](https://pandas.pydata.org/pandas-docs/version/0.18.0/10min.html)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 目录\n",
    "* [创建对象](#创建对象)\n",
    "* [数据视图](#数据视图)\n",
    "* [数据选取](#数据选取)\n",
    "* [数据缺失的处理](#数据缺失的处理)\n",
    "* [函数操作](#函数操作)\n",
    "* [数据合并](#数据合并)\n",
    "* [分组](#分组)\n",
    "* [数据变形](#数据变形)\n",
    "* [时间序列](#时间序列)\n",
    "* [数据标签](#数据标签)\n",
    "* [绘图](#绘图)\n",
    "* [导入导出数据](#导入导出数据)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 创建对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "传入数据列表创建Series对象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = pd.Series([1,3,5,np.nan,6,8])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    1.0\n",
       "1    3.0\n",
       "2    5.0\n",
       "3    NaN\n",
       "4    6.0\n",
       "5    8.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "创建DataFrame对象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过时间索引，自定义标签列名，和numpy的array数据来创建DataFrame对象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "dates = pd.date_range('20130101', periods=6)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n",
       "               '2013-01-05', '2013-01-06'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dates"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(np.random.randn(6,4), index=dates, columns=list('ABCD'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.389291</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>0.042866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>-0.740562</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01 -0.469364 -1.389291  0.844032  0.042866\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585\n",
       "2013-01-06  0.493946  0.848247  1.633055 -0.740562"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "通过字典创建DataFrame对象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = pd.DataFrame({ 'A' : 1.,\n",
    "                     'B' : pd.Timestamp('20130102'),\n",
    "                     'C' : pd.Series(1,index=list(range(4)),dtype='float32'),\n",
    "                     'D' : np.array([3] * 4,dtype='int32'),\n",
    "                     'E' : pd.Categorical([\"test\",\"train\",\"test\",\"train\"]),\n",
    "                     'F' : 'foo' })"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "      <th>F</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>test</td>\n",
       "      <td>foo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>train</td>\n",
       "      <td>foo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>test</td>\n",
       "      <td>foo</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2013-01-02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>3</td>\n",
       "      <td>train</td>\n",
       "      <td>foo</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     A          B    C  D      E    F\n",
       "0  1.0 2013-01-02  1.0  3   test  foo\n",
       "1  1.0 2013-01-02  1.0  3  train  foo\n",
       "2  1.0 2013-01-02  1.0  3   test  foo\n",
       "3  1.0 2013-01-02  1.0  3  train  foo"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A           float64\n",
       "B    datetime64[ns]\n",
       "C           float32\n",
       "D             int32\n",
       "E          category\n",
       "F            object\n",
       "dtype: object"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['A',\n",
       " 'B',\n",
       " 'C',\n",
       " 'D',\n",
       " 'E',\n",
       " 'F',\n",
       " 'T',\n",
       " '_AXIS_ALIASES',\n",
       " '_AXIS_IALIASES',\n",
       " '_AXIS_LEN',\n",
       " '_AXIS_NAMES',\n",
       " '_AXIS_NUMBERS',\n",
       " '_AXIS_ORDERS',\n",
       " '_AXIS_REVERSED',\n",
       " '_AXIS_SLICEMAP',\n",
       " '__abs__',\n",
       " '__add__',\n",
       " '__and__',\n",
       " '__array__',\n",
       " '__array_wrap__',\n",
       " '__bool__',\n",
       " '__bytes__',\n",
       " '__class__',\n",
       " '__contains__',\n",
       " '__copy__',\n",
       " '__deepcopy__',\n",
       " '__delattr__',\n",
       " '__delitem__',\n",
       " '__dict__',\n",
       " '__dir__',\n",
       " '__div__',\n",
       " '__doc__',\n",
       " '__eq__',\n",
       " '__finalize__',\n",
       " '__floordiv__',\n",
       " '__format__',\n",
       " '__ge__',\n",
       " '__getattr__',\n",
       " '__getattribute__',\n",
       " '__getitem__',\n",
       " '__getstate__',\n",
       " '__gt__',\n",
       " '__hash__',\n",
       " '__iadd__',\n",
       " '__imul__',\n",
       " '__init__',\n",
       " '__invert__',\n",
       " '__ipow__',\n",
       " '__isub__',\n",
       " '__iter__',\n",
       " '__itruediv__',\n",
       " '__le__',\n",
       " '__len__',\n",
       " '__lt__',\n",
       " '__mod__',\n",
       " '__module__',\n",
       " '__mul__',\n",
       " '__ne__',\n",
       " '__neg__',\n",
       " '__new__',\n",
       " '__nonzero__',\n",
       " '__or__',\n",
       " '__pow__',\n",
       " '__radd__',\n",
       " '__rand__',\n",
       " '__rdiv__',\n",
       " '__reduce__',\n",
       " '__reduce_ex__',\n",
       " '__repr__',\n",
       " '__rfloordiv__',\n",
       " '__rmod__',\n",
       " '__rmul__',\n",
       " '__ror__',\n",
       " '__round__',\n",
       " '__rpow__',\n",
       " '__rsub__',\n",
       " '__rtruediv__',\n",
       " '__rxor__',\n",
       " '__setattr__',\n",
       " '__setitem__',\n",
       " '__setstate__',\n",
       " '__sizeof__',\n",
       " '__str__',\n",
       " '__sub__',\n",
       " '__subclasshook__',\n",
       " '__truediv__',\n",
       " '__unicode__',\n",
       " '__weakref__',\n",
       " '__xor__',\n",
       " '_accessors',\n",
       " '_add_numeric_operations',\n",
       " '_add_series_only_operations',\n",
       " '_add_series_or_dataframe_operations',\n",
       " '_agg_by_level',\n",
       " '_agg_doc',\n",
       " '_aggregate',\n",
       " '_aggregate_multiple_funcs',\n",
       " '_align_frame',\n",
       " '_align_series',\n",
       " '_apply_broadcast',\n",
       " '_apply_empty_result',\n",
       " '_apply_raw',\n",
       " '_apply_standard',\n",
       " '_at',\n",
       " '_box_col_values',\n",
       " '_box_item_values',\n",
       " '_builtin_table',\n",
       " '_check_inplace_setting',\n",
       " '_check_is_chained_assignment_possible',\n",
       " '_check_percentile',\n",
       " '_check_setitem_copy',\n",
       " '_clear_item_cache',\n",
       " '_combine_const',\n",
       " '_combine_frame',\n",
       " '_combine_match_columns',\n",
       " '_combine_match_index',\n",
       " '_combine_series',\n",
       " '_combine_series_infer',\n",
       " '_compare_frame',\n",
       " '_compare_frame_evaluate',\n",
       " '_consolidate',\n",
       " '_consolidate_inplace',\n",
       " '_construct_axes_dict',\n",
       " '_construct_axes_dict_for_slice',\n",
       " '_construct_axes_dict_from',\n",
       " '_construct_axes_from_arguments',\n",
       " '_constructor',\n",
       " '_constructor_expanddim',\n",
       " '_constructor_sliced',\n",
       " '_convert',\n",
       " '_count_level',\n",
       " '_create_indexer',\n",
       " '_cython_table',\n",
       " '_dir_additions',\n",
       " '_dir_deletions',\n",
       " '_ensure_valid_index',\n",
       " '_expand_axes',\n",
       " '_flex_compare_frame',\n",
       " '_from_arrays',\n",
       " '_from_axes',\n",
       " '_get_agg_axis',\n",
       " '_get_axis',\n",
       " '_get_axis_name',\n",
       " '_get_axis_number',\n",
       " '_get_axis_resolvers',\n",
       " '_get_block_manager_axis',\n",
       " '_get_bool_data',\n",
       " '_get_cacher',\n",
       " '_get_index_resolvers',\n",
       " '_get_item_cache',\n",
       " '_get_numeric_data',\n",
       " '_get_values',\n",
       " '_getitem_array',\n",
       " '_getitem_column',\n",
       " '_getitem_frame',\n",
       " '_getitem_multilevel',\n",
       " '_getitem_slice',\n",
       " '_gotitem',\n",
       " '_iat',\n",
       " '_iget_item_cache',\n",
       " '_iloc',\n",
       " '_indexed_same',\n",
       " '_info_axis',\n",
       " '_info_axis_name',\n",
       " '_info_axis_number',\n",
       " '_info_repr',\n",
       " '_init_dict',\n",
       " '_init_mgr',\n",
       " '_init_ndarray',\n",
       " '_internal_names',\n",
       " '_internal_names_set',\n",
       " '_is_builtin_func',\n",
       " '_is_cached',\n",
       " '_is_cython_func',\n",
       " '_is_datelike_mixed_type',\n",
       " '_is_mixed_type',\n",
       " '_is_numeric_mixed_type',\n",
       " '_is_view',\n",
       " '_ix',\n",
       " '_ixs',\n",
       " '_join_compat',\n",
       " '_loc',\n",
       " '_maybe_cache_changed',\n",
       " '_maybe_update_cacher',\n",
       " '_metadata',\n",
       " '_needs_reindex_multi',\n",
       " '_obj_with_exclusions',\n",
       " '_protect_consolidate',\n",
       " '_reduce',\n",
       " '_reindex_axes',\n",
       " '_reindex_axis',\n",
       " '_reindex_columns',\n",
       " '_reindex_index',\n",
       " '_reindex_multi',\n",
       " '_reindex_with_indexers',\n",
       " '_repr_data_resource_',\n",
       " '_repr_fits_horizontal_',\n",
       " '_repr_fits_vertical_',\n",
       " '_repr_html_',\n",
       " '_repr_latex_',\n",
       " '_reset_cache',\n",
       " '_reset_cacher',\n",
       " '_sanitize_column',\n",
       " '_selected_obj',\n",
       " '_selection',\n",
       " '_selection_list',\n",
       " '_selection_name',\n",
       " '_series',\n",
       " '_set_as_cached',\n",
       " '_set_axis',\n",
       " '_set_axis_name',\n",
       " '_set_is_copy',\n",
       " '_set_item',\n",
       " '_setitem_array',\n",
       " '_setitem_frame',\n",
       " '_setitem_slice',\n",
       " '_setup_axes',\n",
       " '_shallow_copy',\n",
       " '_slice',\n",
       " '_stat_axis',\n",
       " '_stat_axis_name',\n",
       " '_stat_axis_number',\n",
       " '_try_aggregate_string_function',\n",
       " '_typ',\n",
       " '_unpickle_frame_compat',\n",
       " '_unpickle_matrix_compat',\n",
       " '_update_inplace',\n",
       " '_validate_dtype',\n",
       " '_values',\n",
       " '_where',\n",
       " '_xs',\n",
       " 'abs',\n",
       " 'add',\n",
       " 'add_prefix',\n",
       " 'add_suffix',\n",
       " 'agg',\n",
       " 'aggregate',\n",
       " 'align',\n",
       " 'all',\n",
       " 'any',\n",
       " 'append',\n",
       " 'apply',\n",
       " 'applymap',\n",
       " 'as_blocks',\n",
       " 'as_matrix',\n",
       " 'asfreq',\n",
       " 'asof',\n",
       " 'assign',\n",
       " 'astype',\n",
       " 'at',\n",
       " 'at_time',\n",
       " 'axes',\n",
       " 'between_time',\n",
       " 'bfill',\n",
       " 'blocks',\n",
       " 'bool',\n",
       " 'boxplot',\n",
       " 'clip',\n",
       " 'clip_lower',\n",
       " 'clip_upper',\n",
       " 'columns',\n",
       " 'combine',\n",
       " 'combine_first',\n",
       " 'compound',\n",
       " 'consolidate',\n",
       " 'convert_objects',\n",
       " 'copy',\n",
       " 'corr',\n",
       " 'corrwith',\n",
       " 'count',\n",
       " 'cov',\n",
       " 'cummax',\n",
       " 'cummin',\n",
       " 'cumprod',\n",
       " 'cumsum',\n",
       " 'describe',\n",
       " 'diff',\n",
       " 'div',\n",
       " 'divide',\n",
       " 'dot',\n",
       " 'drop',\n",
       " 'drop_duplicates',\n",
       " 'dropna',\n",
       " 'dtypes',\n",
       " 'duplicated',\n",
       " 'empty',\n",
       " 'eq',\n",
       " 'equals',\n",
       " 'eval',\n",
       " 'ewm',\n",
       " 'expanding',\n",
       " 'ffill',\n",
       " 'fillna',\n",
       " 'filter',\n",
       " 'first',\n",
       " 'first_valid_index',\n",
       " 'floordiv',\n",
       " 'from_csv',\n",
       " 'from_dict',\n",
       " 'from_items',\n",
       " 'from_records',\n",
       " 'ftypes',\n",
       " 'ge',\n",
       " 'get',\n",
       " 'get_dtype_counts',\n",
       " 'get_ftype_counts',\n",
       " 'get_value',\n",
       " 'get_values',\n",
       " 'groupby',\n",
       " 'gt',\n",
       " 'head',\n",
       " 'hist',\n",
       " 'iat',\n",
       " 'idxmax',\n",
       " 'idxmin',\n",
       " 'iloc',\n",
       " 'index',\n",
       " 'info',\n",
       " 'insert',\n",
       " 'interpolate',\n",
       " 'is_copy',\n",
       " 'isin',\n",
       " 'isnull',\n",
       " 'items',\n",
       " 'iteritems',\n",
       " 'iterrows',\n",
       " 'itertuples',\n",
       " 'ix',\n",
       " 'join',\n",
       " 'keys',\n",
       " 'kurt',\n",
       " 'kurtosis',\n",
       " 'last',\n",
       " 'last_valid_index',\n",
       " 'le',\n",
       " 'loc',\n",
       " 'lookup',\n",
       " 'lt',\n",
       " 'mad',\n",
       " 'mask',\n",
       " 'max',\n",
       " 'mean',\n",
       " 'median',\n",
       " 'melt',\n",
       " 'memory_usage',\n",
       " 'merge',\n",
       " 'min',\n",
       " 'mod',\n",
       " 'mode',\n",
       " 'mul',\n",
       " 'multiply',\n",
       " 'ndim',\n",
       " 'ne',\n",
       " 'nlargest',\n",
       " 'notnull',\n",
       " 'nsmallest',\n",
       " 'nunique',\n",
       " 'pct_change',\n",
       " 'pipe',\n",
       " 'pivot',\n",
       " 'pivot_table',\n",
       " 'plot',\n",
       " 'pop',\n",
       " 'pow',\n",
       " 'prod',\n",
       " 'product',\n",
       " 'quantile',\n",
       " 'query',\n",
       " 'radd',\n",
       " 'rank',\n",
       " 'rdiv',\n",
       " 'reindex',\n",
       " 'reindex_axis',\n",
       " 'reindex_like',\n",
       " 'rename',\n",
       " 'rename_axis',\n",
       " 'reorder_levels',\n",
       " 'replace',\n",
       " 'resample',\n",
       " 'reset_index',\n",
       " 'rfloordiv',\n",
       " 'rmod',\n",
       " 'rmul',\n",
       " 'rolling',\n",
       " 'round',\n",
       " 'rpow',\n",
       " 'rsub',\n",
       " 'rtruediv',\n",
       " 'sample',\n",
       " 'select',\n",
       " 'select_dtypes',\n",
       " 'sem',\n",
       " 'set_axis',\n",
       " 'set_index',\n",
       " 'set_value',\n",
       " 'shape',\n",
       " 'shift',\n",
       " 'size',\n",
       " 'skew',\n",
       " 'slice_shift',\n",
       " 'sort_index',\n",
       " 'sort_values',\n",
       " 'sortlevel',\n",
       " 'squeeze',\n",
       " 'stack',\n",
       " 'std',\n",
       " 'style',\n",
       " 'sub',\n",
       " 'subtract',\n",
       " 'sum',\n",
       " 'swapaxes',\n",
       " 'swaplevel',\n",
       " 'tail',\n",
       " 'take',\n",
       " 'to_clipboard',\n",
       " 'to_csv',\n",
       " 'to_dense',\n",
       " 'to_dict',\n",
       " 'to_excel',\n",
       " 'to_feather',\n",
       " 'to_gbq',\n",
       " 'to_hdf',\n",
       " 'to_html',\n",
       " 'to_json',\n",
       " 'to_latex',\n",
       " 'to_msgpack',\n",
       " 'to_panel',\n",
       " 'to_period',\n",
       " 'to_pickle',\n",
       " 'to_records',\n",
       " 'to_sparse',\n",
       " 'to_sql',\n",
       " 'to_stata',\n",
       " 'to_string',\n",
       " 'to_timestamp',\n",
       " 'to_xarray',\n",
       " 'transform',\n",
       " 'transpose',\n",
       " 'truediv',\n",
       " 'truncate',\n",
       " 'tshift',\n",
       " 'tz_convert',\n",
       " 'tz_localize',\n",
       " 'unstack',\n",
       " 'update',\n",
       " 'values',\n",
       " 'var',\n",
       " 'where',\n",
       " 'xs']"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dir(df2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据视图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "观察数据的头部和尾部"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.389291</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>0.042866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01 -0.469364 -1.389291  0.844032  0.042866\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>-0.740562</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585\n",
       "2013-01-06  0.493946  0.848247  1.633055 -0.740562"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.tail(3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "查看DataFrame对象的索引，列名，数据信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',\n",
       "               '2013-01-05', '2013-01-06'],\n",
       "              dtype='datetime64[ns]', freq='D')"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['A', 'B', 'C', 'D'], dtype='object')"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.46936354, -1.38929068,  0.84403157,  0.04286594],\n",
       "       [ 0.98657633, -0.68954348, -0.38326456, -1.10493201],\n",
       "       [-0.19242554,  1.74076522,  0.73047859, -1.32078058],\n",
       "       [ 0.04734752, -1.95230265, -0.6915437 , -1.40388308],\n",
       "       [ 0.23302102,  0.61911183,  0.628579  , -0.80258543],\n",
       "       [ 0.49394583,  0.84824737,  1.633055  , -0.74056229]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.values"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "简单统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>6.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>6.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>0.183184</td>\n",
       "      <td>-0.137169</td>\n",
       "      <td>0.460223</td>\n",
       "      <td>-0.888313</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.515722</td>\n",
       "      <td>1.430893</td>\n",
       "      <td>0.855835</td>\n",
       "      <td>0.528401</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>-0.132482</td>\n",
       "      <td>-1.214354</td>\n",
       "      <td>-0.130304</td>\n",
       "      <td>-1.266818</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>0.140184</td>\n",
       "      <td>-0.035216</td>\n",
       "      <td>0.679529</td>\n",
       "      <td>-0.953759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>0.428715</td>\n",
       "      <td>0.790963</td>\n",
       "      <td>0.815643</td>\n",
       "      <td>-0.756068</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>0.042866</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              A         B         C         D\n",
       "count  6.000000  6.000000  6.000000  6.000000\n",
       "mean   0.183184 -0.137169  0.460223 -0.888313\n",
       "std    0.515722  1.430893  0.855835  0.528401\n",
       "min   -0.469364 -1.952303 -0.691544 -1.403883\n",
       "25%   -0.132482 -1.214354 -0.130304 -1.266818\n",
       "50%    0.140184 -0.035216  0.679529 -0.953759\n",
       "75%    0.428715  0.790963  0.815643 -0.756068\n",
       "max    0.986576  1.740765  1.633055  0.042866"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "转置数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>2013-01-01 00:00:00</th>\n",
       "      <th>2013-01-02 00:00:00</th>\n",
       "      <th>2013-01-03 00:00:00</th>\n",
       "      <th>2013-01-04 00:00:00</th>\n",
       "      <th>2013-01-05 00:00:00</th>\n",
       "      <th>2013-01-06 00:00:00</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.192426</td>\n",
       "      <td>0.047348</td>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.493946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>-1.389291</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.848247</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>0.844032</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>1.633055</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>D</th>\n",
       "      <td>0.042866</td>\n",
       "      <td>-1.104932</td>\n",
       "      <td>-1.320781</td>\n",
       "      <td>-1.403883</td>\n",
       "      <td>-0.802585</td>\n",
       "      <td>-0.740562</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   2013-01-01  2013-01-02  2013-01-03  2013-01-04  2013-01-05  2013-01-06\n",
       "A   -0.469364    0.986576   -0.192426    0.047348    0.233021    0.493946\n",
       "B   -1.389291   -0.689543    1.740765   -1.952303    0.619112    0.848247\n",
       "C    0.844032   -0.383265    0.730479   -0.691544    0.628579    1.633055\n",
       "D    0.042866   -1.104932   -1.320781   -1.403883   -0.802585   -0.740562"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.T"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据列名排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>D</th>\n",
       "      <th>C</th>\n",
       "      <th>B</th>\n",
       "      <th>A</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>0.042866</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>-1.389291</td>\n",
       "      <td>-0.469364</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>-1.104932</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>0.986576</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.320781</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>-0.192426</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-1.403883</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>0.047348</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-0.802585</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.233021</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>-0.740562</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>0.493946</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   D         C         B         A\n",
       "2013-01-01  0.042866  0.844032 -1.389291 -0.469364\n",
       "2013-01-02 -1.104932 -0.383265 -0.689543  0.986576\n",
       "2013-01-03 -1.320781  0.730479  1.740765 -0.192426\n",
       "2013-01-04 -1.403883 -0.691544 -1.952303  0.047348\n",
       "2013-01-05 -0.802585  0.628579  0.619112  0.233021\n",
       "2013-01-06 -0.740562  1.633055  0.848247  0.493946"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_index(axis=1, ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "根据B列数值排序"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.389291</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>0.042866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>-0.740562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883\n",
       "2013-01-01 -0.469364 -1.389291  0.844032  0.042866\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585\n",
       "2013-01-06  0.493946  0.848247  1.633055 -0.740562\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by='B')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据选取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 选取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "选取单列数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01   -0.469364\n",
       "2013-01-02    0.986576\n",
       "2013-01-03   -0.192426\n",
       "2013-01-04    0.047348\n",
       "2013-01-05    0.233021\n",
       "2013-01-06    0.493946\n",
       "Freq: D, Name: A, dtype: float64"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['A']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "按行选取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.389291</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>0.042866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01 -0.469364 -1.389291  0.844032  0.042866\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[0:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['20130102':'20130104']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 通过标签选取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A   -0.469364\n",
       "B   -1.389291\n",
       "C    0.844032\n",
       "D    0.042866\n",
       "Name: 2013-01-01 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[dates[0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.389291</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B\n",
       "2013-01-01 -0.469364 -1.389291\n",
       "2013-01-02  0.986576 -0.689543\n",
       "2013-01-03 -0.192426  1.740765\n",
       "2013-01-04  0.047348 -1.952303\n",
       "2013-01-05  0.233021  0.619112\n",
       "2013-01-06  0.493946  0.848247"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[:,['A','B']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B\n",
       "2013-01-02  0.986576 -0.689543\n",
       "2013-01-03 -0.192426  1.740765\n",
       "2013-01-04  0.047348 -1.952303"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['20130102':'20130104',['A','B']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    0.986576\n",
       "B   -0.689543\n",
       "Name: 2013-01-02 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc['20130102',['A','B']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.46936353804430075"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.loc[dates[0],'A']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.46936353804430075"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.at[dates[0],'A']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 通过位置选取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    0.047348\n",
       "B   -1.952303\n",
       "C   -0.691544\n",
       "D   -1.403883\n",
       "Name: 2013-01-04 00:00:00, dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B\n",
       "2013-01-04  0.047348 -1.952303\n",
       "2013-01-05  0.233021  0.619112"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[3:5, 0:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>C</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.383265</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>0.730479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.628579</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         C\n",
       "2013-01-02  0.986576 -0.383265\n",
       "2013-01-03 -0.192426  0.730479\n",
       "2013-01-05  0.233021  0.628579"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[[1,2,4],[0,2]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[1:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-1.389291</td>\n",
       "      <td>0.844032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   B         C\n",
       "2013-01-01 -1.389291  0.844032\n",
       "2013-01-02 -0.689543 -0.383265\n",
       "2013-01-03  1.740765  0.730479\n",
       "2013-01-04 -1.952303 -0.691544\n",
       "2013-01-05  0.619112  0.628579\n",
       "2013-01-06  0.848247  1.633055"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[:, 1:3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.689543482094678"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iloc[1, 1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-0.689543482094678"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.iat[1, 1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 布尔索引 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>-0.740562</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585\n",
       "2013-01-06  0.493946  0.848247  1.633055 -0.740562"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df.A>0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>0.042866</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>NaN</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2013-01-01       NaN       NaN  0.844032  0.042866\n",
       "2013-01-02  0.986576       NaN       NaN       NaN\n",
       "2013-01-03       NaN  1.740765  0.730479       NaN\n",
       "2013-01-04  0.047348       NaN       NaN       NaN\n",
       "2013-01-05  0.233021  0.619112  0.628579       NaN\n",
       "2013-01-06  0.493946  0.848247  1.633055       NaN"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[df>0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = df.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2['E'] = ['one', 'one','two','three','four','three']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>-0.469364</td>\n",
       "      <td>-1.389291</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>0.042866</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-1.104932</td>\n",
       "      <td>one</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-1.403883</td>\n",
       "      <td>three</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "      <td>four</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>-0.740562</td>\n",
       "      <td>three</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D      E\n",
       "2013-01-01 -0.469364 -1.389291  0.844032  0.042866    one\n",
       "2013-01-02  0.986576 -0.689543 -0.383265 -1.104932    one\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781    two\n",
       "2013-01-04  0.047348 -1.952303 -0.691544 -1.403883  three\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585   four\n",
       "2013-01-06  0.493946  0.848247  1.633055 -0.740562  three"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>-1.320781</td>\n",
       "      <td>two</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>-0.802585</td>\n",
       "      <td>four</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D     E\n",
       "2013-01-03 -0.192426  1.740765  0.730479 -1.320781   two\n",
       "2013-01-05  0.233021  0.619112  0.628579 -0.802585  four"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2[df2['E'].isin(['two','four'])]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 修改数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "s1 = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130102', periods=6))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-02    1\n",
       "2013-01-03    2\n",
       "2013-01-04    3\n",
       "2013-01-05    4\n",
       "2013-01-06    5\n",
       "2013-01-07    6\n",
       "Freq: D, dtype: int64"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['F'] = s1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.at[dates[0], 'A'] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.iat[0, 1] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[:, 'D'] = np.array([5] * len(df)) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>5</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>5</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>5</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>0.233021</td>\n",
       "      <td>0.619112</td>\n",
       "      <td>0.628579</td>\n",
       "      <td>5</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>0.493946</td>\n",
       "      <td>0.848247</td>\n",
       "      <td>1.633055</td>\n",
       "      <td>5</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D    F\n",
       "2013-01-01  0.000000  0.000000  0.844032  5  NaN\n",
       "2013-01-02  0.986576 -0.689543 -0.383265  5  1.0\n",
       "2013-01-03 -0.192426  1.740765  0.730479  5  2.0\n",
       "2013-01-04  0.047348 -1.952303 -0.691544  5  3.0\n",
       "2013-01-05  0.233021  0.619112  0.628579  5  4.0\n",
       "2013-01-06  0.493946  0.848247  1.633055  5  5.0"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = df.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2[df2 > 0] = -df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>-0.844032</td>\n",
       "      <td>-5</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>-0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>-5</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>-1.740765</td>\n",
       "      <td>-0.730479</td>\n",
       "      <td>-5</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>-5</td>\n",
       "      <td>-3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-0.233021</td>\n",
       "      <td>-0.619112</td>\n",
       "      <td>-0.628579</td>\n",
       "      <td>-5</td>\n",
       "      <td>-4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>-0.493946</td>\n",
       "      <td>-0.848247</td>\n",
       "      <td>-1.633055</td>\n",
       "      <td>-5</td>\n",
       "      <td>-5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D    F\n",
       "2013-01-01  0.000000  0.000000 -0.844032 -5  NaN\n",
       "2013-01-02 -0.986576 -0.689543 -0.383265 -5 -1.0\n",
       "2013-01-03 -0.192426 -1.740765 -0.730479 -5 -2.0\n",
       "2013-01-04 -0.047348 -1.952303 -0.691544 -5 -3.0\n",
       "2013-01-05 -0.233021 -0.619112 -0.628579 -5 -4.0\n",
       "2013-01-06 -0.493946 -0.848247 -1.633055 -5 -5.0"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据缺失的处理"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1 = df.reindex(index=dates[0:4], columns=list(df.columns) + ['E'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "df1.loc[dates[0]:dates[1],'E'] = 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>5</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>5</td>\n",
       "      <td>2.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D    F    E\n",
       "2013-01-01  0.000000  0.000000  0.844032  5  NaN  1.0\n",
       "2013-01-02  0.986576 -0.689543 -0.383265  5  1.0  1.0\n",
       "2013-01-03 -0.192426  1.740765  0.730479  5  2.0  NaN\n",
       "2013-01-04  0.047348 -1.952303 -0.691544  5  3.0  NaN"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "舍弃含有NaN的行"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D    F    E\n",
       "2013-01-02  0.986576 -0.689543 -0.383265  5  1.0  1.0"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.dropna(how='any')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "填充缺失数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>5</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>-0.383265</td>\n",
       "      <td>5</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-0.192426</td>\n",
       "      <td>1.740765</td>\n",
       "      <td>0.730479</td>\n",
       "      <td>5</td>\n",
       "      <td>2.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.047348</td>\n",
       "      <td>-1.952303</td>\n",
       "      <td>-0.691544</td>\n",
       "      <td>5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C  D    F    E\n",
       "2013-01-01  0.000000  0.000000  0.844032  5  5.0  1.0\n",
       "2013-01-02  0.986576 -0.689543 -0.383265  5  1.0  1.0\n",
       "2013-01-03 -0.192426  1.740765  0.730479  5  2.0  5.0\n",
       "2013-01-04  0.047348 -1.952303 -0.691544  5  3.0  5.0"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1.fillna(value=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>False</td>\n",
       "      <td>True</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                A      B      C      D      F      E\n",
       "2013-01-01  False  False  False  False   True  False\n",
       "2013-01-02  False  False  False  False  False  False\n",
       "2013-01-03  False  False  False  False  False   True\n",
       "2013-01-04  False  False  False  False  False   True"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.isnull(df1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 函数操作"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 统计"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "纵向求均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    0.261411\n",
       "B    0.094380\n",
       "C    0.460223\n",
       "D    5.000000\n",
       "F    3.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "横向求均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01    1.461008\n",
       "2013-01-02    1.182754\n",
       "2013-01-03    1.855764\n",
       "2013-01-04    1.080700\n",
       "2013-01-05    2.096142\n",
       "2013-01-06    2.595050\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.mean(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = pd.Series([1,3,5,np.nan,6,8], index=dates).shift(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-01-01    NaN\n",
       "2013-01-02    NaN\n",
       "2013-01-03    1.0\n",
       "2013-01-04    3.0\n",
       "2013-01-05    5.0\n",
       "2013-01-06    NaN\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>-1.192426</td>\n",
       "      <td>0.740765</td>\n",
       "      <td>-0.269521</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>-2.952652</td>\n",
       "      <td>-4.952303</td>\n",
       "      <td>-3.691544</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>-4.766979</td>\n",
       "      <td>-4.380888</td>\n",
       "      <td>-4.371421</td>\n",
       "      <td>0.0</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C    D    F\n",
       "2013-01-01       NaN       NaN       NaN  NaN  NaN\n",
       "2013-01-02       NaN       NaN       NaN  NaN  NaN\n",
       "2013-01-03 -1.192426  0.740765 -0.269521  4.0  1.0\n",
       "2013-01-04 -2.952652 -4.952303 -3.691544  2.0  0.0\n",
       "2013-01-05 -4.766979 -4.380888 -4.371421  0.0 -1.0\n",
       "2013-01-06       NaN       NaN       NaN  NaN  NaN"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sub(s, axis='index')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Apply函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>F</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2013-01-01</th>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.844032</td>\n",
       "      <td>5</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-02</th>\n",
       "      <td>0.986576</td>\n",
       "      <td>-0.689543</td>\n",
       "      <td>0.460767</td>\n",
       "      <td>10</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-03</th>\n",
       "      <td>0.794151</td>\n",
       "      <td>1.051222</td>\n",
       "      <td>1.191246</td>\n",
       "      <td>15</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-04</th>\n",
       "      <td>0.841498</td>\n",
       "      <td>-0.901081</td>\n",
       "      <td>0.499702</td>\n",
       "      <td>20</td>\n",
       "      <td>6.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-05</th>\n",
       "      <td>1.074519</td>\n",
       "      <td>-0.281969</td>\n",
       "      <td>1.128281</td>\n",
       "      <td>25</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2013-01-06</th>\n",
       "      <td>1.568465</td>\n",
       "      <td>0.566278</td>\n",
       "      <td>2.761336</td>\n",
       "      <td>30</td>\n",
       "      <td>15.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C   D     F\n",
       "2013-01-01  0.000000  0.000000  0.844032   5   NaN\n",
       "2013-01-02  0.986576 -0.689543  0.460767  10   1.0\n",
       "2013-01-03  0.794151  1.051222  1.191246  15   3.0\n",
       "2013-01-04  0.841498 -0.901081  0.499702  20   6.0\n",
       "2013-01-05  1.074519 -0.281969  1.128281  25  10.0\n",
       "2013-01-06  1.568465  0.566278  2.761336  30  15.0"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(np.cumsum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "A    1.179002\n",
       "B    3.693068\n",
       "C    2.324599\n",
       "D    0.000000\n",
       "F    4.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.apply(lambda x: x.max() - x.min())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 直方统计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = pd.Series(np.random.randint(0, 7, size=10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    6\n",
       "1    1\n",
       "2    4\n",
       "3    6\n",
       "4    3\n",
       "5    2\n",
       "6    3\n",
       "7    5\n",
       "8    2\n",
       "9    2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2    3\n",
       "6    2\n",
       "3    2\n",
       "5    1\n",
       "4    1\n",
       "1    1\n",
       "dtype: int64"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 字符串方法"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0       a\n",
       "1       b\n",
       "2       c\n",
       "3    aaba\n",
       "4    baca\n",
       "5     NaN\n",
       "6    caba\n",
       "7     dog\n",
       "8     cat\n",
       "dtype: object"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s.str.lower()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据合并"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Concat函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(np.random.randn(10, 4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.413620</td>\n",
       "      <td>-1.114527</td>\n",
       "      <td>0.322678</td>\n",
       "      <td>1.207744</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.812499</td>\n",
       "      <td>-1.338866</td>\n",
       "      <td>0.611622</td>\n",
       "      <td>0.445057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.365098</td>\n",
       "      <td>0.177919</td>\n",
       "      <td>0.823212</td>\n",
       "      <td>1.529158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.803774</td>\n",
       "      <td>-1.422255</td>\n",
       "      <td>1.411392</td>\n",
       "      <td>0.400721</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.732753</td>\n",
       "      <td>1.413181</td>\n",
       "      <td>-0.338617</td>\n",
       "      <td>0.088442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-0.509033</td>\n",
       "      <td>-1.237311</td>\n",
       "      <td>1.021978</td>\n",
       "      <td>-0.596258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>0.841053</td>\n",
       "      <td>-0.404684</td>\n",
       "      <td>1.528639</td>\n",
       "      <td>-0.273577</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.966884</td>\n",
       "      <td>-2.142516</td>\n",
       "      <td>1.041670</td>\n",
       "      <td>0.109264</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2.231267</td>\n",
       "      <td>2.011625</td>\n",
       "      <td>0.601062</td>\n",
       "      <td>0.533928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>-0.134641</td>\n",
       "      <td>0.165157</td>\n",
       "      <td>-1.236827</td>\n",
       "      <td>1.681187</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3\n",
       "0  0.413620 -1.114527  0.322678  1.207744\n",
       "1 -1.812499 -1.338866  0.611622  0.445057\n",
       "2  0.365098  0.177919  0.823212  1.529158\n",
       "3 -0.803774 -1.422255  1.411392  0.400721\n",
       "4  0.732753  1.413181 -0.338617  0.088442\n",
       "5 -0.509033 -1.237311  1.021978 -0.596258\n",
       "6  0.841053 -0.404684  1.528639 -0.273577\n",
       "7  0.966884 -2.142516  1.041670  0.109264\n",
       "8  2.231267  2.011625  0.601062  0.533928\n",
       "9 -0.134641  0.165157 -1.236827  1.681187"
      ]
     },
     "execution_count": 74,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [],
   "source": [
    "pieces = [df[:3], df[3:6], df[7:]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.413620</td>\n",
       "      <td>-1.114527</td>\n",
       "      <td>0.322678</td>\n",
       "      <td>1.207744</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-1.812499</td>\n",
       "      <td>-1.338866</td>\n",
       "      <td>0.611622</td>\n",
       "      <td>0.445057</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.365098</td>\n",
       "      <td>0.177919</td>\n",
       "      <td>0.823212</td>\n",
       "      <td>1.529158</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.803774</td>\n",
       "      <td>-1.422255</td>\n",
       "      <td>1.411392</td>\n",
       "      <td>0.400721</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.732753</td>\n",
       "      <td>1.413181</td>\n",
       "      <td>-0.338617</td>\n",
       "      <td>0.088442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>-0.509033</td>\n",
       "      <td>-1.237311</td>\n",
       "      <td>1.021978</td>\n",
       "      <td>-0.596258</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.966884</td>\n",
       "      <td>-2.142516</td>\n",
       "      <td>1.041670</td>\n",
       "      <td>0.109264</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>2.231267</td>\n",
       "      <td>2.011625</td>\n",
       "      <td>0.601062</td>\n",
       "      <td>0.533928</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>-0.134641</td>\n",
       "      <td>0.165157</td>\n",
       "      <td>-1.236827</td>\n",
       "      <td>1.681187</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          0         1         2         3\n",
       "0  0.413620 -1.114527  0.322678  1.207744\n",
       "1 -1.812499 -1.338866  0.611622  0.445057\n",
       "2  0.365098  0.177919  0.823212  1.529158\n",
       "3 -0.803774 -1.422255  1.411392  0.400721\n",
       "4  0.732753  1.413181 -0.338617  0.088442\n",
       "5 -0.509033 -1.237311  1.021978 -0.596258\n",
       "7  0.966884 -2.142516  1.041670  0.109264\n",
       "8  2.231267  2.011625  0.601062  0.533928\n",
       "9 -0.134641  0.165157 -1.236827  1.681187"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat(pieces)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Join函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "left = pd.DataFrame({'key': ['foo', 'foo'], 'lval': [1, 2]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "right = pd.DataFrame({'key': ['foo', 'foo'], 'rval': [4, 5]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "      <th>lval</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>foo</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>foo</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   key  lval\n",
       "0  foo     1\n",
       "1  foo     2"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "left"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "      <th>rval</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>foo</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>foo</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   key  rval\n",
       "0  foo     4\n",
       "1  foo     5"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "right"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key</th>\n",
       "      <th>lval</th>\n",
       "      <th>rval</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>foo</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>foo</td>\n",
       "      <td>1</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>foo</td>\n",
       "      <td>2</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>foo</td>\n",
       "      <td>2</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   key  lval  rval\n",
       "0  foo     1     4\n",
       "1  foo     1     5\n",
       "2  foo     2     4\n",
       "3  foo     2     5"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.merge(left, right, on='key')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Append函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(np.random.randn(8, 4), columns=['A','B','C','D'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.142659</td>\n",
       "      <td>-0.941171</td>\n",
       "      <td>-0.186519</td>\n",
       "      <td>-0.811977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.584561</td>\n",
       "      <td>0.177886</td>\n",
       "      <td>-0.190396</td>\n",
       "      <td>0.664233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.807829</td>\n",
       "      <td>0.268193</td>\n",
       "      <td>0.683990</td>\n",
       "      <td>0.477042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.474986</td>\n",
       "      <td>-1.098600</td>\n",
       "      <td>-0.038280</td>\n",
       "      <td>2.087236</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.906703</td>\n",
       "      <td>0.678425</td>\n",
       "      <td>-0.090156</td>\n",
       "      <td>-0.444430</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.329748</td>\n",
       "      <td>1.110306</td>\n",
       "      <td>0.713732</td>\n",
       "      <td>-0.714841</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1.218329</td>\n",
       "      <td>-0.376264</td>\n",
       "      <td>0.389029</td>\n",
       "      <td>-1.526025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.423347</td>\n",
       "      <td>1.821127</td>\n",
       "      <td>-1.795346</td>\n",
       "      <td>-0.795738</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          A         B         C         D\n",
       "0 -0.142659 -0.941171 -0.186519 -0.811977\n",
       "1  0.584561  0.177886 -0.190396  0.664233\n",
       "2 -1.807829  0.268193  0.683990  0.477042\n",
       "3 -1.474986 -1.098600 -0.038280  2.087236\n",
       "4  1.906703  0.678425 -0.090156 -0.444430\n",
       "5  0.329748  1.110306  0.713732 -0.714841\n",
       "6  1.218329 -0.376264  0.389029 -1.526025\n",
       "7  0.423347  1.821127 -1.795346 -0.795738"
      ]
     },
     "execution_count": 83,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "s = df.iloc[3]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.142659</td>\n",
       "      <td>-0.941171</td>\n",
       "      <td>-0.186519</td>\n",
       "      <td>-0.811977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.584561</td>\n",
       "      <td>0.177886</td>\n",
       "      <td>-0.190396</td>\n",
       "      <td>0.664233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-1.807829</td>\n",
       "      <td>0.268193</td>\n",
       "      <td>0.683990</td>\n",
       "      <td>0.477042</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-1.474986</td>\n",
       "      <td>-1.098600</td>\n",
       "      <td>-0.038280</td>\n",
       "      <td>2.087236</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.906703</td>\n",
       "      <td>0.678425</td>\n",
       "      <td>-0.090156</td>\n",
       "      <td>-0.444430</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>0.329748</td>\n",
       "      <td>1.110306</td>\n",
       "      <td>0.713732</td>\n",
       "      <td>-0.714841</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>1.218329</td>\n",
       "      <td>-0.376264</td>\n",
       "      <td>0.389029</td>\n",
       "      <td>-1.526025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>0.423347</td>\n",
       "      <td>1.821127</td>\n",
       "      <td>-1.795346</td>\n",
       "      <td>-0.795738</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>-1.474986</td>\n",
       "      <td>-1.098600</td>\n",
       "      <td>-0.038280</td>\n",
       "      <td>2.087236</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          A         B         C         D\n",
       "0 -0.142659 -0.941171 -0.186519 -0.811977\n",
       "1  0.584561  0.177886 -0.190396  0.664233\n",
       "2 -1.807829  0.268193  0.683990  0.477042\n",
       "3 -1.474986 -1.098600 -0.038280  2.087236\n",
       "4  1.906703  0.678425 -0.090156 -0.444430\n",
       "5  0.329748  1.110306  0.713732 -0.714841\n",
       "6  1.218329 -0.376264  0.389029 -1.526025\n",
       "7  0.423347  1.821127 -1.795346 -0.795738\n",
       "8 -1.474986 -1.098600 -0.038280  2.087236"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.append(s, ignore_index=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分组"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "[返回目录](#目录)df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',\n",
    "                          'foo', 'bar', 'foo', 'foo'],\n",
    "                   'B' : ['one', 'one', 'two', 'three',\n",
    "                           'two', 'two', 'one', 'three'],\n",
    "                   'C' : np.random.randn(8),\n",
    "                   'D' : np.random.randn(8)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>foo</td>\n",
       "      <td>one</td>\n",
       "      <td>-1.145254</td>\n",
       "      <td>0.974305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>bar</td>\n",
       "      <td>one</td>\n",
       "      <td>1.195757</td>\n",
       "      <td>-0.187145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>foo</td>\n",
       "      <td>two</td>\n",
       "      <td>-0.699446</td>\n",
       "      <td>0.248682</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>bar</td>\n",
       "      <td>three</td>\n",
       "      <td>-0.587003</td>\n",
       "      <td>-0.200543</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>foo</td>\n",
       "      <td>two</td>\n",
       "      <td>2.046185</td>\n",
       "      <td>-1.377637</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>bar</td>\n",
       "      <td>two</td>\n",
       "      <td>0.444696</td>\n",
       "      <td>-0.880975</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>foo</td>\n",
       "      <td>one</td>\n",
       "      <td>0.057713</td>\n",
       "      <td>-1.275762</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>foo</td>\n",
       "      <td>three</td>\n",
       "      <td>0.272196</td>\n",
       "      <td>0.016167</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     A      B         C         D\n",
       "0  foo    one -1.145254  0.974305\n",
       "1  bar    one  1.195757 -0.187145\n",
       "2  foo    two -0.699446  0.248682\n",
       "3  bar  three -0.587003 -0.200543\n",
       "4  foo    two  2.046185 -1.377637\n",
       "5  bar    two  0.444696 -0.880975\n",
       "6  foo    one  0.057713 -1.275762\n",
       "7  foo  three  0.272196  0.016167"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>bar</th>\n",
       "      <td>1.053451</td>\n",
       "      <td>-1.268663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>foo</th>\n",
       "      <td>0.531394</td>\n",
       "      <td>-1.414245</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            C         D\n",
       "A                      \n",
       "bar  1.053451 -1.268663\n",
       "foo  0.531394 -1.414245"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby('A').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">bar</th>\n",
       "      <th>one</th>\n",
       "      <td>1.195757</td>\n",
       "      <td>-0.187145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>three</th>\n",
       "      <td>-0.587003</td>\n",
       "      <td>-0.200543</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>0.444696</td>\n",
       "      <td>-0.880975</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">foo</th>\n",
       "      <th>one</th>\n",
       "      <td>-1.087541</td>\n",
       "      <td>-0.301457</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>three</th>\n",
       "      <td>0.272196</td>\n",
       "      <td>0.016167</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>1.346739</td>\n",
       "      <td>-1.128956</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  C         D\n",
       "A   B                        \n",
       "bar one    1.195757 -0.187145\n",
       "    three -0.587003 -0.200543\n",
       "    two    0.444696 -0.880975\n",
       "foo one   -1.087541 -0.301457\n",
       "    three  0.272196  0.016167\n",
       "    two    1.346739 -1.128956"
      ]
     },
     "execution_count": 89,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(['A', 'B']).sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据变形"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Stack函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [],
   "source": [
    "tuples = list(zip(*[['bar', 'bar', 'baz', 'baz',\n",
    "                     'foo', 'foo', 'qux', 'qux'],\n",
    "                   ['one', 'two', 'one', 'two',\n",
    "                    'one', 'two', 'one', 'two']]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [],
   "source": [
    "index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(np.random.randn(8, 2), index=index, columns=['A', 'B'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = df[:4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>first</th>\n",
       "      <th>second</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">bar</th>\n",
       "      <th>one</th>\n",
       "      <td>-0.625492</td>\n",
       "      <td>2.471493</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>0.934708</td>\n",
       "      <td>1.595349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">baz</th>\n",
       "      <th>one</th>\n",
       "      <td>0.686079</td>\n",
       "      <td>0.279957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>0.039190</td>\n",
       "      <td>-0.534317</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     A         B\n",
       "first second                    \n",
       "bar   one    -0.625492  2.471493\n",
       "      two     0.934708  1.595349\n",
       "baz   one     0.686079  0.279957\n",
       "      two     0.039190 -0.534317"
      ]
     },
     "execution_count": 94,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "stacked = df2.stack()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "first  second   \n",
       "bar    one     A   -0.625492\n",
       "               B    2.471493\n",
       "       two     A    0.934708\n",
       "               B    1.595349\n",
       "baz    one     A    0.686079\n",
       "               B    0.279957\n",
       "       two     A    0.039190\n",
       "               B   -0.534317\n",
       "dtype: float64"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stacked"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>first</th>\n",
       "      <th>second</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">bar</th>\n",
       "      <th>one</th>\n",
       "      <td>-0.625492</td>\n",
       "      <td>2.471493</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>0.934708</td>\n",
       "      <td>1.595349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">baz</th>\n",
       "      <th>one</th>\n",
       "      <td>0.686079</td>\n",
       "      <td>0.279957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>two</th>\n",
       "      <td>0.039190</td>\n",
       "      <td>-0.534317</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     A         B\n",
       "first second                    \n",
       "bar   one    -0.625492  2.471493\n",
       "      two     0.934708  1.595349\n",
       "baz   one     0.686079  0.279957\n",
       "      two     0.039190 -0.534317"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stacked.unstack()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>second</th>\n",
       "      <th>one</th>\n",
       "      <th>two</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>first</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">bar</th>\n",
       "      <th>A</th>\n",
       "      <td>-0.625492</td>\n",
       "      <td>0.934708</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2.471493</td>\n",
       "      <td>1.595349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">baz</th>\n",
       "      <th>A</th>\n",
       "      <td>0.686079</td>\n",
       "      <td>0.039190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0.279957</td>\n",
       "      <td>-0.534317</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "second        one       two\n",
       "first                      \n",
       "bar   A -0.625492  0.934708\n",
       "      B  2.471493  1.595349\n",
       "baz   A  0.686079  0.039190\n",
       "      B  0.279957 -0.534317"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stacked.unstack(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>first</th>\n",
       "      <th>bar</th>\n",
       "      <th>baz</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>second</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">one</th>\n",
       "      <th>A</th>\n",
       "      <td>-0.625492</td>\n",
       "      <td>0.686079</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>2.471493</td>\n",
       "      <td>0.279957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"2\" valign=\"top\">two</th>\n",
       "      <th>A</th>\n",
       "      <td>0.934708</td>\n",
       "      <td>0.039190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1.595349</td>\n",
       "      <td>-0.534317</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "first          bar       baz\n",
       "second                      \n",
       "one    A -0.625492  0.686079\n",
       "       B  2.471493  0.279957\n",
       "two    A  0.934708  0.039190\n",
       "       B  1.595349 -0.534317"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stacked.unstack(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据透视表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame({'A' : ['one', 'one', 'two', 'three'] * 3,\n",
    "                   'B' : ['A', 'B', 'C'] * 4,\n",
    "                   'C' : ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'] * 2,\n",
    "                   'D' : np.random.randn(12),\n",
    "                   'E' : np.random.randn(12)})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "      <th>E</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>one</td>\n",
       "      <td>A</td>\n",
       "      <td>foo</td>\n",
       "      <td>-0.072719</td>\n",
       "      <td>-0.034173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>one</td>\n",
       "      <td>B</td>\n",
       "      <td>foo</td>\n",
       "      <td>1.262336</td>\n",
       "      <td>-0.907695</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>two</td>\n",
       "      <td>C</td>\n",
       "      <td>foo</td>\n",
       "      <td>0.093161</td>\n",
       "      <td>-1.516473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>three</td>\n",
       "      <td>A</td>\n",
       "      <td>bar</td>\n",
       "      <td>0.190056</td>\n",
       "      <td>0.481209</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>one</td>\n",
       "      <td>B</td>\n",
       "      <td>bar</td>\n",
       "      <td>1.319855</td>\n",
       "      <td>0.255924</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>one</td>\n",
       "      <td>C</td>\n",
       "      <td>bar</td>\n",
       "      <td>0.374758</td>\n",
       "      <td>-0.019331</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>two</td>\n",
       "      <td>A</td>\n",
       "      <td>foo</td>\n",
       "      <td>-1.019282</td>\n",
       "      <td>0.673759</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>three</td>\n",
       "      <td>B</td>\n",
       "      <td>foo</td>\n",
       "      <td>-1.526206</td>\n",
       "      <td>-0.521203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>one</td>\n",
       "      <td>C</td>\n",
       "      <td>foo</td>\n",
       "      <td>1.600168</td>\n",
       "      <td>1.632461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>one</td>\n",
       "      <td>A</td>\n",
       "      <td>bar</td>\n",
       "      <td>-2.410462</td>\n",
       "      <td>-0.271305</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>two</td>\n",
       "      <td>B</td>\n",
       "      <td>bar</td>\n",
       "      <td>0.387701</td>\n",
       "      <td>-1.039195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>three</td>\n",
       "      <td>C</td>\n",
       "      <td>bar</td>\n",
       "      <td>-1.367669</td>\n",
       "      <td>-1.760517</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        A  B    C         D         E\n",
       "0     one  A  foo -0.072719 -0.034173\n",
       "1     one  B  foo  1.262336 -0.907695\n",
       "2     two  C  foo  0.093161 -1.516473\n",
       "3   three  A  bar  0.190056  0.481209\n",
       "4     one  B  bar  1.319855  0.255924\n",
       "5     one  C  bar  0.374758 -0.019331\n",
       "6     two  A  foo -1.019282  0.673759\n",
       "7   three  B  foo -1.526206 -0.521203\n",
       "8     one  C  foo  1.600168  1.632461\n",
       "9     one  A  bar -2.410462 -0.271305\n",
       "10    two  B  bar  0.387701 -1.039195\n",
       "11  three  C  bar -1.367669 -1.760517"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>C</th>\n",
       "      <th>bar</th>\n",
       "      <th>foo</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">one</th>\n",
       "      <th>A</th>\n",
       "      <td>-2.410462</td>\n",
       "      <td>-0.072719</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>1.319855</td>\n",
       "      <td>1.262336</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>0.374758</td>\n",
       "      <td>1.600168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">three</th>\n",
       "      <th>A</th>\n",
       "      <td>0.190056</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-1.526206</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>-1.367669</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th rowspan=\"3\" valign=\"top\">two</th>\n",
       "      <th>A</th>\n",
       "      <td>NaN</td>\n",
       "      <td>-1.019282</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>B</th>\n",
       "      <td>0.387701</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>C</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.093161</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "C             bar       foo\n",
       "A     B                    \n",
       "one   A -2.410462 -0.072719\n",
       "      B  1.319855  1.262336\n",
       "      C  0.374758  1.600168\n",
       "three A  0.190056       NaN\n",
       "      B       NaN -1.526206\n",
       "      C -1.367669       NaN\n",
       "two   A       NaN -1.019282\n",
       "      B  0.387701       NaN\n",
       "      C       NaN  0.093161"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.pivot_table(values='D', index=['A', 'B'], columns='C')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 时间序列"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('1/1/2012', periods=100, freq='S')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randint(0, 500, len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01-01    27339\n",
       "Freq: 5T, dtype: int64"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.resample('5Min').sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('3/6/2012 00:00', periods=5, freq='D')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(rng)), rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-06   -0.118691\n",
       "2012-03-07   -1.424038\n",
       "2012-03-08    0.377441\n",
       "2012-03-09   -1.116195\n",
       "2012-03-10    1.180595\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts_utc = ts.tz_localize('UTC')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-06 00:00:00+00:00   -0.118691\n",
       "2012-03-07 00:00:00+00:00   -1.424038\n",
       "2012-03-08 00:00:00+00:00    0.377441\n",
       "2012-03-09 00:00:00+00:00   -1.116195\n",
       "2012-03-10 00:00:00+00:00    1.180595\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_utc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-03-05 19:00:00-05:00   -0.118691\n",
       "2012-03-06 19:00:00-05:00   -1.424038\n",
       "2012-03-07 19:00:00-05:00    0.377441\n",
       "2012-03-08 19:00:00-05:00   -1.116195\n",
       "2012-03-09 19:00:00-05:00    1.180595\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts_utc.tz_convert('US/Eastern')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [],
   "source": [
    "rng = pd.date_range('1/1/2012', periods=5, freq='M')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(rng)), index=rng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01-31    1.138201\n",
       "2012-02-29    0.677539\n",
       "2012-03-31    0.272933\n",
       "2012-04-30   -0.238112\n",
       "2012-05-31   -1.122162\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 114,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "ps = ts.to_period()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01    1.138201\n",
       "2012-02    0.677539\n",
       "2012-03    0.272933\n",
       "2012-04   -0.238112\n",
       "2012-05   -1.122162\n",
       "Freq: M, dtype: float64"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2012-01-01    1.138201\n",
       "2012-02-01    0.677539\n",
       "2012-03-01    0.272933\n",
       "2012-04-01   -0.238112\n",
       "2012-05-01   -1.122162\n",
       "Freq: MS, dtype: float64"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ps.to_timestamp()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 118,
   "metadata": {},
   "outputs": [],
   "source": [
    "prng = pd.period_range('1990Q1', '2000Q4', freq='Q-NOV')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(len(prng)), prng)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts.index = (prng.asfreq('M', 'e') + 1).asfreq('H', 's') + 9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1990-03-01 09:00   -1.555191\n",
       "1990-06-01 09:00    1.535344\n",
       "1990-09-01 09:00   -0.092187\n",
       "1990-12-01 09:00    1.285081\n",
       "1991-03-01 09:00    1.130063\n",
       "Freq: H, dtype: float64"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ts.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据标签"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame({\"id\":[1,2,3,4,5,6], \"raw_grade\":['a', 'b', 'b', 'a', 'a', 'e']})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [],
   "source": [
    "df['grade'] = df['raw_grade'].astype(\"category\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    a\n",
       "1    b\n",
       "2    b\n",
       "3    a\n",
       "4    a\n",
       "5    e\n",
       "Name: grade, dtype: category\n",
       "Categories (3, object): [a, b, e]"
      ]
     },
     "execution_count": 124,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['grade']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "df[\"grade\"].cat.categories = [\"very good\", \"good\", \"very bad\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [],
   "source": [
    "df[\"grade\"] = df[\"grade\"].cat.set_categories([\"very bad\", \"bad\", \"medium\", \"good\", \"very good\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    very good\n",
       "1         good\n",
       "2         good\n",
       "3    very good\n",
       "4    very good\n",
       "5     very bad\n",
       "Name: grade, dtype: category\n",
       "Categories (5, object): [very bad, bad, medium, good, very good]"
      ]
     },
     "execution_count": 127,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"grade\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>id</th>\n",
       "      <th>raw_grade</th>\n",
       "      <th>grade</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>e</td>\n",
       "      <td>very bad</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>b</td>\n",
       "      <td>good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>b</td>\n",
       "      <td>good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>a</td>\n",
       "      <td>very good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>a</td>\n",
       "      <td>very good</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>a</td>\n",
       "      <td>very good</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id raw_grade      grade\n",
       "5   6         e   very bad\n",
       "1   2         b       good\n",
       "2   3         b       good\n",
       "0   1         a  very good\n",
       "3   4         a  very good\n",
       "4   5         a  very good"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.sort_values(by='grade')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "grade\n",
       "very bad     1\n",
       "bad          0\n",
       "medium       0\n",
       "good         2\n",
       "very good    3\n",
       "dtype: int64"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.groupby(\"grade\").size()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 绘图 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [],
   "source": [
    "ts = ts.cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7fde05138048>"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fde05143b70>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ts.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,\n",
    "                  columns=['A', 'B', 'C', 'D']) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = df.cumsum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7fde050d2be0>"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fde050f1358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fde050d5a90>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(); df.plot(); plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入导出数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[返回目录](#目录)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('foo.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Unnamed: 0</th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2000-01-01</td>\n",
       "      <td>-0.640246</td>\n",
       "      <td>-1.846295</td>\n",
       "      <td>-0.181754</td>\n",
       "      <td>0.981574</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2000-01-02</td>\n",
       "      <td>-1.580720</td>\n",
       "      <td>-2.382281</td>\n",
       "      <td>-0.745580</td>\n",
       "      <td>0.175213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2000-01-03</td>\n",
       "      <td>-2.745502</td>\n",
       "      <td>-1.809188</td>\n",
       "      <td>-0.371424</td>\n",
       "      <td>-0.724011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2000-01-04</td>\n",
       "      <td>-2.576642</td>\n",
       "      <td>-1.287329</td>\n",
       "      <td>-0.615925</td>\n",
       "      <td>-1.154665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2000-01-05</td>\n",
       "      <td>-2.442921</td>\n",
       "      <td>-0.481561</td>\n",
       "      <td>-0.283864</td>\n",
       "      <td>0.068934</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0         A         B         C         D\n",
       "0  2000-01-01 -0.640246 -1.846295 -0.181754  0.981574\n",
       "1  2000-01-02 -1.580720 -2.382281 -0.745580  0.175213\n",
       "2  2000-01-03 -2.745502 -1.809188 -0.371424 -0.724011\n",
       "3  2000-01-04 -2.576642 -1.287329 -0.615925 -1.154665\n",
       "4  2000-01-05 -2.442921 -0.481561 -0.283864  0.068934"
      ]
     },
     "execution_count": 137,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_csv('foo.csv').head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_hdf('foo.h5','df')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-01</th>\n",
       "      <td>-0.640246</td>\n",
       "      <td>-1.846295</td>\n",
       "      <td>-0.181754</td>\n",
       "      <td>0.981574</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-02</th>\n",
       "      <td>-1.580720</td>\n",
       "      <td>-2.382281</td>\n",
       "      <td>-0.745580</td>\n",
       "      <td>0.175213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-03</th>\n",
       "      <td>-2.745502</td>\n",
       "      <td>-1.809188</td>\n",
       "      <td>-0.371424</td>\n",
       "      <td>-0.724011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-04</th>\n",
       "      <td>-2.576642</td>\n",
       "      <td>-1.287329</td>\n",
       "      <td>-0.615925</td>\n",
       "      <td>-1.154665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-2.442921</td>\n",
       "      <td>-0.481561</td>\n",
       "      <td>-0.283864</td>\n",
       "      <td>0.068934</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2000-01-01 -0.640246 -1.846295 -0.181754  0.981574\n",
       "2000-01-02 -1.580720 -2.382281 -0.745580  0.175213\n",
       "2000-01-03 -2.745502 -1.809188 -0.371424 -0.724011\n",
       "2000-01-04 -2.576642 -1.287329 -0.615925 -1.154665\n",
       "2000-01-05 -2.442921 -0.481561 -0.283864  0.068934"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_hdf('foo.h5','df').head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_excel('foo.xlsx', sheet_name='Sheet1')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>A</th>\n",
       "      <th>B</th>\n",
       "      <th>C</th>\n",
       "      <th>D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2000-01-01</th>\n",
       "      <td>-0.640246</td>\n",
       "      <td>-1.846295</td>\n",
       "      <td>-0.181754</td>\n",
       "      <td>0.981574</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-02</th>\n",
       "      <td>-1.580720</td>\n",
       "      <td>-2.382281</td>\n",
       "      <td>-0.745580</td>\n",
       "      <td>0.175213</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-03</th>\n",
       "      <td>-2.745502</td>\n",
       "      <td>-1.809188</td>\n",
       "      <td>-0.371424</td>\n",
       "      <td>-0.724011</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-04</th>\n",
       "      <td>-2.576642</td>\n",
       "      <td>-1.287329</td>\n",
       "      <td>-0.615925</td>\n",
       "      <td>-1.154665</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2000-01-05</th>\n",
       "      <td>-2.442921</td>\n",
       "      <td>-0.481561</td>\n",
       "      <td>-0.283864</td>\n",
       "      <td>0.068934</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                   A         B         C         D\n",
       "2000-01-01 -0.640246 -1.846295 -0.181754  0.981574\n",
       "2000-01-02 -1.580720 -2.382281 -0.745580  0.175213\n",
       "2000-01-03 -2.745502 -1.809188 -0.371424 -0.724011\n",
       "2000-01-04 -2.576642 -1.287329 -0.615925 -1.154665\n",
       "2000-01-05 -2.442921 -0.481561 -0.283864  0.068934"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.read_excel('foo.xlsx', 'Sheet1', index_col=None, na_values=['NA']).head()"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Raw Cell Format",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
